/*
 * BlockSorting.h
 *
 *  Created on: 27/05/2014
 *      Author: manuel
 */

#ifndef BLOCKSORTING_H_
#define BLOCKSORTING_H_

#include "QuickSort.h"
#include "../persistencia/Archivo.h"
#include <string.h>
#include <stdio.h>
#include <iostream>
#include <algorithm>

class BlockSorting {
public:
	BlockSorting(unsigned short tamano_bloque, unsigned short optimizacion);
	virtual ~BlockSorting();

	std::string codificarArchivo(const char* nombre_archivo);
	void decodificarArchivo(const char* nombre_archivo_codif);

private:
	unsigned short tamano_bloque;
	unsigned short optimizacion;

	const char* nombre_archivo;
	std::string subfijo_cod;
	std::string subfijo_decod;

	void codificarBloque(unsigned char *S,int N, unsigned char *L, unsigned short &I, unsigned short n);
	void decodificarBloque(unsigned char *L, unsigned short I, unsigned char *F, unsigned int N);
};

#endif /* BLOCKSORTING_H_ */
